package controller;

import service.RegisterService;
import util.CheckUtil;
import util.InputUtil;
import util.PrintUtil;

/**
 * 注册控制器 用于三方的注册
 */
public final class RegisterController {
    private RegisterController() {
    }

    /**
     * 获取验证成功后的手机号码
     */
    public static String getTel(RegisterService registerService) {
        /*
         * 1、输入手机号
         * 2、通过返回的值来判断registerService.verifyRegisterTel()
         */
        String tel = InputUtil.getInputText("请输入手机号:");
        while (true) {
            int telFlag = registerService.verifyRegisterTel(tel);
            if (telFlag == 0) {
                return tel;
            }
            if (telFlag == 1) {
                PrintUtil.printString("手机号码格式错误!");
            } else {
                PrintUtil.printString("该手机号已被注册!");
            }
            tel = InputUtil.getInputText("请重新输入手机号:");
        }
    }

    /**
     * 获取验证成功后的名称
     *
     * @return 名称
     */
    public static String getName(RegisterService registerService) {
        /*
         * 1、输入名称
         * 2、通过返回的值来判断registerService.verifyRegisterName(name);
         */
        String name = InputUtil.getInputText("请输入昵称:");
        while (true) {
            int telFlag = registerService.verifyRegisterName(name);
            if (telFlag == 0) {
                return name;
            }
            if (telFlag == 1) {
                PrintUtil.printString("昵称不能包含特殊字符!");
            } else {
                PrintUtil.printString("该昵称已被注册!");
            }
            name = InputUtil.getInputText("请重新输入昵称:");
        }
    }

    /**
     * 获取验证成功后的密码
     *
     * @return 密码
     */
    public static String getPassword() {
        /*
         * 1、输入密码进行密码判断
         * 2、通过返回的值来判断
         */
        while (true) {
            String password = InputUtil.getInputText("请输入密码:");
            switch (CheckUtil.checkPassword(password)) {
                case 1:
                case 2:
                    PrintUtil.printString("密码必须在8~16个字符内");
                    break;
                case 3:
                    PrintUtil.printString("密码只能包含数字、字母、特殊符号（下划线、@、#、$、！）,不允许包含其他字符");
                    break;
                case 4:
                    PrintUtil.printString("密码中不包含数字");
                    break;
                case 5:
                    PrintUtil.printString("密码中不包含字母");
                    break;
                case 6:
                    PrintUtil.printString("密码格式正确");
                    return password;
            }
        }
    }
}
